//
//  BaokuViewController.h
//  cylTestStatic111129
//
//  Created by max on 11-11-29.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>

// ModalView情况下
/**
	@brief presentModalViewController情况下，用户点击返回时发出此消息
 */
#define kReturnToApp    @"dissmiss"

// 弹出情况下
/**
	@brief 宝库自动弹出时会发出此消息，如需要可注册Observer侦听本消息。
 */
#define kBaokuViewDidPopup_Notification @"baokuPop"
/**
	@brief 宝库被用户关闭时，发出此消息。
 */
#define kBaokuViewDidClosed_Notification    @"closeBaoku"

//#define kThisIsASpecialCase 

@class BaokuTabBarContrller;

@protocol BaokuViewControllerDelegate <NSObject>

- (id)viewControllerForPresentModalView;

@end

@interface BaokuViewController : UIViewController <UITabBarControllerDelegate>{
    IBOutlet BaokuTabBarContrller *baokuTabCtr;
    IBOutlet UIView *m_view_settingBoard;
    IBOutlet UISwitch *m_switch_iPhone,*m_switch_iPad;
//    IBOutlet UILabel *m_label_settingTitle;
    int iOpenTimesBase_;
    int iPopRate_;
    int iCommentPopBase_;
    int iCommentRepeat_;
    //拼接数据的变量
    NSMutableData *responseData_;
    
@private
  NSManagedObjectContext *managedObjectContext_;
  NSManagedObjectModel *managedObjectModel_;
  NSPersistentStoreCoordinator *persistentStoreCoordinator_;
    NSInteger settingAppForSysType;
    NSNotification *notifRemoteNotification_;
    
}
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (nonatomic, retain) NSNotification *RemoteNotification;
@property (nonatomic, assign) NSObject<BaokuViewControllerDelegate>* delegate;
/**
	@brief 指示宝库是否处于插件模式
	@returns YES - 是，NO - 否
 */
+ (BOOL)baokuIsPlugIn;
/**
	@brief 弹出宝库——仅用于iPhone环境。
	@param aSuperView 宝库的父View，从此View弹出宝库
 */
- (void)popupBaokuWithSuperView:(UIView*)aSuperView;
/**
	@brief 设置宝库弹出的View的最终缩放系数，默认为0.9倍。此值保存在NSUserDefault中
	@param aFactor 缩放系数
 */
- (void)setPopupBaokuViewFinishScaleFactor:(float)aFactor;
/**
	@brief 注册push消息，放在AppDelegate的application:didFinishLaunchingWithOptions:中调用。
	@param aLaunchOptions 程序启动选项参数，如果是push消息，此函数才进行处理。
	@param aAppItunesId App在iTunes中的ID，如宝库的AppID是
 */
- (void)registerPushNotificationAndLaunchingWithOptions:(NSDictionary *)aLaunchOptions andAppItunesId:(NSString*)aAppItunesId;
/**
	@brief 注册远程消息push成功，放在AppDelegate的application:didRegisterForRemoteNotificationsWithDeviceToken:中调用。
	@param aDeviceToken 设备令牌
 */
- (void)registerPushNotificationSuccessWithDeviceToken:(NSData*)aDeviceToken;
/**
	@brief 程序运行时收到push消息，放在AppDelegate的applicationRecievePushNotification:中调用
	@param aUserInfo 消息的userinfo
 */
- (void)applicationRecievePushNotification:(NSDictionary *)aUserInfo;
/**
	@brief 应用被激活,主要用于统计应用开启次数，放在AppDelegate的applicationDidBecomeActive中调用。
 */
- (void)applicationDidBecomeActive;

/**
	@brief 设置宝库弹出的条件，首次弹出时应用打开的次数BaseTime,和弹出的频率。
	@param aBaseTime 首次弹出宝库应用打开（被激活）的次数
	@param aRate 循环参数，用于指定每aRate次弹出宝库。
 */
- (void)setPopBaokuBaseTimesCount:(int)aBaseTime andTimeRate:(int)aRate;

/**
	@brief 是否开启弹出评价提示，默认是开启的，但要保证applicationDidBecomeActive被正确调用。
	@param aEnable YES-开启，NO-关闭。
    @param aUrl 评论页面的URL，当用户点了去评价将会跳到此URL。如果不需要此值传 nil.
 */
- (void)setCommentNoticeEnable:(BOOL)aEnable commentURL:(NSURL*)aUrl;

/**
	@brief 设置应用打开第几次弹出提示，提醒用户去评论。打开次数包括退到后台再打开。默认是第3次弹出，下一次默认是1，弹出评价提示如果和宝库弹出冲突，则评价提醒会在延时20秒后弹出。
	@param aTime 应用第几次被打开时弹出提示去评价。
    @param aRepeatTime 弹出评价的循环参数，用户点了“下次再说”后，程序第aRepeatTime次被激活时再弹出。
 */
- (void)setCommentNoticePopupBaseTime:(int)aTime andRepeatTime:(int)aRepeatTime;

/**
	@brief 设置 弹出的评价提示 的标题和内容
        默认标题："亲，给个评价吧！"
        默认内容："   如果您觉得我们的应用还不错，请给个评价吧。您的认可是我们前进的最大动力，感谢您的支持！"
        默认标题及内容支持 简、繁体中文。
	@param strTitle 标题
	@param body 内容
 */
- (void)setCommentNoticeTitle:(NSString*)strTitle body:(NSString *)body;

@end
